/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package core;

// temp remove - import Tree.DirTree;
import Tree.DirTree;
import drapdrop.MyTransferHandler;
import java.io.File;
import javax.swing.TransferHandler;
import view.IDirChangedListener;


public interface IView
{       
    /**
     * Get current file object
     * @return  current selected file object
     */
    File getCurrentSelectedFile();

    /**
     * Get list of current files
     *@return array file object
     */
    File[] getCurrentSelectedFiles();

    /**
     * Go to list drive on computer
     *
     */ 
    void gotoRoots();

    /**
     * Get path current directory
     * @return Absolute path of current directory as String
     */
    String getPathCurrentDir();

    /**
     * Get file object of current directory for handler
     * @return current directory as file object
     */
    File getCurrentDir();

    /**
     * Set view as focus
     * @param isFocus  as Boolean object
     */
    void setFocus(boolean isFocus);

    /**
     * Check if View is focus
     * @return True if focus
     */
    boolean isFocus();

    /**
     * Update view base on user action without change directory
     *
     */
    void refresh();

    /**
     * Update view in case directory change
     * @param dir as file object
     */
    void refresh(File dir);

    /**
     * Go back
     */
    void goBack();

    /**
     * Go down
     */
    void goForward();

    public File getOldFileZip();

    public void addTransferHandler(MyTransferHandler handler);

    public void addDirChangeListener(IDirChangedListener newDir);

    public void removeTree();

    public void addTree(DirTree _treeLeft);

    // ngdlong - Temp remove some function since code is not completed yet
    
    /**
     * Add xử lý sự kiện khi thư mục hiện hành thay đổi
     * @param  newDir  đối tượng cài đặt interface IDirChangedListener
     */
//    void addDirChangeListener(IDirChangedListener newDir);

    /**
     * Add xử lý sự kiện khi drag drog file và thư mục
     * @param  handler  đối tượng kiểu MyTransferHandler
     */
//    void addTransferHandler(MyTransferHandler handler);

    /**
     * Add xử lý sự kiện khi thư mục hiện hành của view thay đổi nó sẽ thông báo cho DirTree
     * @param tree đối tượng kiểu DirTree
     */
//    void addTree(DirTree tree);

    /**
     * Remvo DirTree gán liền với view đã add
     */
  //  void removeTree();

    /**
     * Lấy đối tượng File zip cũ đã lưu
     * @return đối tượng kiểu File
     */
    //File getOldFileZip();
}
